package com.ruoyi.trainingManagement.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.trainingManagement.domain.CourseScheduleDetails;
import com.ruoyi.trainingManagement.domain.Vo.CourseAndTimeVo;
import org.springframework.transaction.annotation.Transactional;

/**
 * 课程排课详细信息Service接口
 * 
 * @author chenxl
 * @date 2025-06-18
 */
public interface ICourseScheduleDetailsService 
{
    /**
     * 查询课程排课详细信息
     * 
     * @param id 课程排课详细信息主键
     * @return 课程排课详细信息
     */
    public CourseScheduleDetails selectCourseScheduleDetailsById(String id);

    /**
     * 查询课程排课详细信息列表
     * 
     * @param courseScheduleDetails 课程排课详细信息
     * @return 课程排课详细信息集合
     */
    public List<CourseScheduleDetails> selectCourseScheduleDetailsList(CourseScheduleDetails courseScheduleDetails);

    /**
     * 新增课程排课详细信息
     * 
     * @param courseScheduleDetails 课程排课详细信息
     * @return 结果
     */
    public int insertCourseScheduleDetails (CourseScheduleDetails courseScheduleDetails);

    //public List<CourseScheduleDetails> insertCourseScheduleDetails(CourseScheduleDetails courseScheduleDetails);

    /**
     * 修改课程排课详细信息
     * 
     * @param courseScheduleDetails 课程排课详细信息
     * @return 结果
     */
    public int updateCourseScheduleDetails(CourseScheduleDetails courseScheduleDetails);

    /**
     * 批量删除课程排课详细信息
     * 
     * @param ids 需要删除的课程排课详细信息主键集合
     * @return 结果
     */
    public int deleteCourseScheduleDetailsByIds(String[] ids);

    /**
     * 删除课程排课详细信息信息
     * 
     * @param id 课程排课详细信息主键
     * @return 结果
     */
    public int deleteCourseScheduleDetailsById(String id);


    @Transactional(rollbackFor = Exception.class)
    AjaxResult autoCourseScheduling(int semesterId, int academic_year, int isScheduleCompleted);

    /**
     * 更新班级的授课教师ID
     *
     * @param id 班级ID
     * @param teacherId 教师ID
     * @return 更新结果
     */
    int updateTeacherIdById(String id, String teacherId);

    List<CourseScheduleDetails> selectByCourseSemesterGrade(String courseId, int semesterId, int grade);

    /*输入教师ID*/
    List<CourseAndTimeVo> getCourseAndTimeVoListByTeacherId(String teacherId);

    //获取培养方案课程详细信息列表
//    @Override
//    public List<CourseScheduleDetails> selectCourseScheduleDetailsListOfCollege(List<String> collegeIds)
//    {
//        return courseScheduleDetailsMapper.selectCourseScheduleDetailsList(courseScheduleDetails);
//    }
    //selectCourseScheduleDetailsByCollegeIds
    List<CourseScheduleDetails> selectCourseScheduleDetailsByCollegeIds(List<String> collegeIds);

    List<CourseScheduleDetails> selectCourseScheduleDetailsByIds(List<String> ids);

    //获取培养方案课程详细信息列表
//    List<CourseScheduleDetails> selectCourseScheduleDetailsListOfCollege(List<String> collegeIds);
}
